package com.dongnao.barry.ls38_rxjavaopertor.rxjava;

/**
 * Created by Administrator on 2018/5/30.
 */
//角色:  造纸厂的制作部门
// rxjava:发射器  与发射器之间的引用    不是一个环 与另外一个环的直接引用
public class OnSubscribleLift<T,R> implements ObservableOnSubscribe<R>{

    //人民日报的发射器
    ObservableOnSubscribe<T> parent;
//    外包公司
    Operator<? extends R,? super  T> operator;
    public OnSubscribleLift(ObservableOnSubscribe<T> onSubscribe, Function<? super T, ? extends R> function) {
        this.parent = onSubscribe;
//        funtion  内容编程报纸的 方法        外包  1    不是  2
        this.operator =new OperatorMap<T,R>(function);
    }

    @Override
    public void subscribe(Observer<? super R> observer) {
//        只是实例化了农民工的对象
        Observer<? super T> st = operator.apply(observer);
//        st   农民工（观察者）

//        调用人民日报的发射器的  subscribe方法
        parent.subscribe(st);

    }
}
